const weakset = new WeakSet()
// 区别一：只能存放对象类型
// weakset.add(10)

// 区别二：对对象是一个弱引用，正常的引用是强引用，即：垃圾回收机制会认为有强引用的对象不会回收
// 反之，弱引用则会被回收
let obj = {
  name: "yz",
}

const set = new Set()
// 强引用
set.add(obj)
// 弱引用
weakset.add(obj)

// 3.weakSet的应用场景
const personSet = new WeakSet()
class Person {
  constructor() {
    personSet.add(this)
  }

  running() {
    if(personSet.has(this)) {
      throw new Error("不能通过非构造方法创建出来的对象调用running方法")
    }
    console.log("running~", this);
  }
}
const p = new Person()
p.running()
// 移除class顺带移除personSet
// p = null
p.running.call({name: "yz"})
